Builder pattern
Builder design pattern: Why do we need a Director? - Stack Overflow